<?php

namespace app\manager;

use app\common\JwpLog;

class RedisDriver
{
    private $redis ;
    public function __construct($host,$port,$pwd)
    {
        $this->redis = new \Redis();
         $this->redis->connect($host, $port);
         if (!empty($pwd)){
             $this->redis->auth($pwd);
         }
    }

    //魔术方法，调用任何方法都会进入到这里面
    public function __call($name, $arguments)
    {
        $res = [$this->redis,$name];
        //动态调用 redis 的方法
        try {
            $ret = call_user_func_array($res, $arguments);
        } catch (\Exception $e){
            //网络异常、查Redis异常，记录异常信息
            JwpLog::error(sprintf("REDIS_CONNECT_ERROR redis %s , param[%s] result[%s]",$name, json_encode($arguments), json_encode($ret)));
            throw $e;
        }
        JwpLog::info(sprintf("redis %s , param[%s] result[%s]",$name, json_encode($arguments), json_encode($ret)));
        return $ret;
    }
}